---
title: 系统设计
---
在系统分析阶段，我们已经搞清楚了软件“做什么” 的问题，并通过需求规格说明书描述了出来，这也是目标系统的逻辑模型。

进入设计阶段，要把软件做什么的逻辑模型转换成 “怎么做” 的物理模型。即着手实现软件系统的需求。

## 处理流程设计
处理流程其实就是业务流程，流程设计的任务是设计出系统所有模块和它们之间的相互关系，并具体设计出每个模块内部的功能和处理过程。
### 业务流程建模
标杆瞄准：以行业领先的标杆企业为目标，结合本企业情况分析建模。<br/>
IDEF（一系列建模、分析和仿真方法的统称）。 <br/>
DEMO（组织动态本质建模法） <br/>
Petri网  <br/>
业务流程建模语言：BPEL、BPML、BPMN、XPDL <br/>
基于服务的 BPM：基于Web 服务的思想对业务流程建模。<br/>

* IDFFO: 业务流程（功能）建模
* IDFF1X: 数据建模（如E-R模型）
* IDFF2: 仿真建模设计
* IDFF4: 面向对象设计
* IDFF8: 用户界面建模
* IDFF12: 组织结构建模

### 流程设计工具
<img alt={'N-S图'} src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/img/202409141341383.png"/>
<img alt={'PAD 图'} src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/img/202409141344694.png"/>

<font color='RedOrange'>程序流程图（Program Flow Diagram，RFD）</font> 用一些图框表示各种操作，它独立于任何一种程序设计语言，比较直观、清晰，易于学习掌握。任何复杂的程序流程图都应该由<font color='RedOrange'>顺序、选择和循环结构</font>组合或嵌套而成。

<font color='RedOrange'>IPO 图</font> 也是流程描述工具，用来描述构成软件系统的每个模块的<font color='RedOrange'>输入、输出和数据加工</font> 。数据流图也是一种 IPO 图。

<font color='RedOrange'>N-S 图</font> 容易表示嵌套和层次关系，并具有强烈的结构化特征。但是当问题很复杂时，N-S 模型可能很大，因此<font color='RedOrange'>不适合于复杂程序的设计</font>。其实就是程序流程图的另一种表示方式。

<font color='RedOrange'>问题分析图 （PAD）是一种支持结构化程序设计</font> 的图形工具。PAD 具有清晰的逻辑结构、标准化的图形等优点，更重要的是，它引导设计人员使用结构化程序设计方法，从而提高程序的质量。

上面四个本质上都是差不多的，都是流程设计工具，只不过表示方式不同。

### 业务流程重组 BPR
BPR 是对企业的业务流程进行<font color='RedOrange'>根本性的再思考和彻底性的再设计</font>，从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量显著性的成就，<font color='RedOrange'>BPR 设计原则、系统规划和步骤如下图所示</font>:
<img alt={'业务流程重组 BPR'} src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/img/202409141414229.png"/>
可以当成一个新的软件的设计，需要记忆原则。
### 业务流程管理 BPM
BPM 是一种<font color='RedOrange'>以规范化的构造端到端的卓越业务流程为中心</font>，以持续的<font color='RedOrange'>提高组织业务绩效为目的的系统化方法</font>。

BPM 与 BPR 管理思想最根本的不同就在于<font color='RedOrange'>流程管理并不要求对所有的流程进行再造</font>。构造卓越业务流程并不是流程再造，而是<font color='RedOrange'>根据现有流程的具体情况，对流程进行规范化的设计</font>。

流程管理包含三个层面：<font color='RedOrange'>规范流程、优化流程和再造流程</font> 。
## 系统设计
这里的系统设计是传统意义上的结构化设计（还有面向对象设计）。

系统设计的主要目的：为系统制定蓝图，在各种技术和实施方法中权衡利弊，精心设计，合理地利用各种资源，<font color='RedOrange'>最终勾画出新系统的详细设计方法</font>。

系统设计方法：<font color='RedOrange'>结构化设计方法、面向对象设计方法</font>。

系统设计主要任务：<font color='RedOrange'>概要设计、详细设计</font>

概要设计基本任务：又称为<font color='RedOrange'>系统总体设计</font>，是将系统的功能需求分配给每个软件模块，确定每个模块的功能和调用关系，<font color='RedOrange'>形成软件的模块结构图，即系统结构图</font>。概要设计说明书。

详细设计基本任务：<font color='RedOrange'>模块内详细算法设计、模块内数据结构、数据库的物理设计、其它设计（代码、输入/输出格式、用户界面）</font>、编写详细设计说明书、评审。

### 系统设计基本原理
- 抽象化
- 自顶向下，逐步求精（先概要设计、再详细设计）
- 信息隐蔽，强调封装
- 模块独立（高内聚、低耦合）

实现的时候是自底向上的实现。
### 系统设计原则

- 保持模块的大小适中
- 尽可能减少调用的深度（有的时候为了模块化，不能跨层调用，也只能一层一层往下调用。）
- 多扇入、少扇出（扇入就是被调用、扇出调用其它模块），扇入证明有价值，复用程度很高；少扇出证明低耦合。
- 单入口、单出口 ； 这里是指功能模块的输入输出
- 模块的作用域应该在模块之内
- 功能应该是可预测的
## 人机界面设计
人机界面设计三大黄金原则：

![人机界面设计](https://wkq-img.oss-cn-chengdu.aliyuncs.com/img/202409141625142.png)

